home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / drbubtxt / 56100tar.z / 56100tar / 56100 / source.2 < prev   
Text File  |  1992-04-28  |  6KB  |  196 lines

  1. ========================================================================
  2. B.3    SECOND SET OF BENCHMARKS
  3. ========================================================================
  4. B.3.1   Sine Wave Generation Using Double Integration Technique
  5.  
  6.         clr     b
  7.         move    #$4000,a
  8.         move    #0,n1
  9.  
  10.         move    #$4532,x1
  11.         move    #$1,r1
  12.         move    x0,y0
  13.  
  14.         do      y1,loop1
  15.         mac     x0,b1,a   b,x:(r1)+n1
  16.         mac    -y0,a1,b
  17. loop1
  18.         move              b,x:(r1)
  19.  
  20. ========================================================================
  21. B.3.2   Sine Wave Generation Using Second Order Oscillator
  22.  
  23.         clr     a
  24.         move    #$4000,x1
  25.  
  26.         move    #$6d4b,x0
  27.         move    #$1,r1
  28.         move    #0,n1
  29.  
  30.         do      y1,loop2
  31.         mac    -x1,x0,a   x1,x:(r1)+n1
  32.         neg     a
  33.         mac     x1,x0,a
  34.         tfr     x1,a      a,x1
  35. loop2
  36.         move              x1,x:(r1)
  37.  
  38. ========================================================================
  39. B.3.3   IIR Filter Using Cascaded Transpose BIQUAD Cell
  40.  
  41.         move    #w1,r0
  42.         move    #w2,r1
  43.         move    #N-1,m0
  44.         move    m0,m1
  45.         move    #0,n0
  46.         move    #0,n1
  47.         move    #c,r3
  48.         ori     #08,mr
  49.         move              x:(r0)+n0,b  x:(r3)+,x0    ;b=w1;y0=b0/2
  50.         asr     b                                    ;b=w1/2
  51.  
  52.         movep             x:<<input,y0               ;y0=x
  53.  
  54.         do      #N,end_lp
  55.         macr    y0,x0,b   x:(r1)+n1,a  x:(r3)+,x0    ;b=y/2;get w2,b1/2
  56.         asr     a         b,y1                       ;a=w2/2;y1=y
  57.         mac     x0,y0,a   x:(r3)+,x0                 ;a=x*b1/2+w2/2,get a1/2
  58.         macr    x0,y1,a   x:(r3)+,x0                 ;a=w1/2;get b2/2
  59.         mpy     x0,y0,a   a,x:(r0)+                  ;a=x*b2/2;save w1     
  60.         move              x:(r3)+,x0   b,y0          ;y0=y;get a2/2
  61.         macr    y1,x0,a   x:(r0)+n0,b  x:(r3)+,x0    ;a=w2/2;get next w1, b0/2
  62.         asr     b         a,x:(r1)+                  ;b=w1/2; save w2
  63. end_lp
  64.         movep             y0,x:<<output              ;output y
  65.  
  66. ========================================================================
  67. B.3.4   IIR Filter Using The Nth Order Direct Form II Canonic
  68.  
  69.  
  70. ;The equation of the filter becomes:
  71.  
  72. ;       wn = a0*xn - a1*wn-1 - a2*wn-2........... - aN-1*wn-N
  73. ;       yn = b0*wn +b1*wn-1 - b2*wn-2...........- bN-1*wn-N
  74.  
  75.         move    #c,r3
  76.         move    #w,r0
  77.         move    #N,m0
  78.         move    #0,n0
  79.  
  80.         movep             x:<<input,y0              ;a=xn
  81.         clr     a         x:(r3)+,x1                ;y0=wn-1, x1=a1
  82.         rep     #N-1
  83.         mac     y0,x1,a   x:(r0)+,y0  x:(r3)+,x1
  84.         macr    y0,x1,a   x:(r0)+,y0  x:(r3)+,x1
  85.         clr     a         a,x:(r0)+n0
  86.         move              x:(r0)+,y0
  87.         rep     #N-1
  88.         mac     y0,x1,a   x:(r0)+,y0  x:(r3)+,x1
  89.         macr    y0,x1,a   x:(r0)+,y0  x:(r3)+,x1
  90.  
  91.         movep             a,x:<<output              ;output y
  92.  
  93. ========================================================================
  94. B.3.5   Find The Index Of A Maximum Value In An Array
  95.  
  96.         move    #AD,r0
  97.         move    #-2,n1
  98.         clr     a       x:(r0)+,b
  99.  
  100.         do      #N,end_lp3
  101.         cmpm    b,a
  102.         tle     b,a     r0,r1
  103.         move            x:(r0)+,b
  104. end_lp3
  105.         nop
  106.         lea     (r1)+n1,r1
  107.  
  108. ========================================================================
  109. B.3.6   Proportional Integrator Differentiator (PID) Algorithm
  110.  
  111. ;The PID is the most commonly used algorithm in control applications
  112.  
  113. ;y(n) = y(n-1) + k0 x(n) + k1 x(n-1) + k2 x(n-2)
  114.  
  115.         move    #k,r3
  116.         move    #s+2,r0
  117.         move    #-1,n0
  118.         move    #2,m0
  119.  
  120.         movep             x:<<input,x0
  121.  
  122.         move              x:(r0)+,b     x:(r3)+,y0
  123.         mac     x0,y0,b   x:(r0)+,y0    x:(r3)+,x1
  124.         mac     y0,x1,b   x:(r0)+,y0    x:(r3)+,x1
  125.         macr    y0,x1,b   x0,x:(r0)+n0
  126.         move              b,x:(r0)
  127.  
  128.         movep             b,x:<<output
  129.  
  130. ========================================================================
  131. B.3.7   Reed Solomon Main Loop
  132.  
  133. ;n3=n1=-1
  134.         do      #28,loopn
  135.         move            x:(r0)+n0,y1    ;Get from interleave
  136.         move            x:(r3)+n3,a     ;get P4
  137.         eor     y1,a    b,x:(r1)+n1     ;alpha(a) store p2
  138.         move    a,n1                    ;Move ALPHA for table lookup
  139.         move            x:tablebase,b   ;tableptr in b
  140.         add     b,a     y1,x:(r2)+      ;table index (a);store sample
  141.         tfr     x0,b    x:(a1),y1       ;table entry y1;g1+base (b)
  142.         add     y1,b                    ;table ptr(b)
  143.         tfr     y0,a    x:(b1),x1       ;alpha1(x1);g2+base(a)
  144.         add     y1,a    x:(r3)+,b       ;table ptr(a);P3(b)
  145.         eor     x1,b    x:(a1),y1       ;p4(b),alpha2(a)
  146.         move            x:(r1)-,a       ;p2(a)
  147.         eor     y1,a    b,x:(r3)+n3     ;p3(a), store p4
  148.         move            x:(r1),b        ;p1(b)
  149.         eor     x1,b    a,x:(r3)+       ;Add ALPHA2+P2, s new P1
  150.         move            n1,x:(r1)+      ;store p1
  151. loopn
  152.  
  153. ========================================================================
  154. B.3.8   N Double Precision Real Multiplies
  155.  
  156.         move    #AD,r0
  157.         move    #BD,r3
  158.         move    #c,r1
  159.  
  160.         move              x:(r0)+,y0  x:(r3)+,x0
  161.         do      #N,end_loop
  162.         move              x:(r0)+,y1  x:(r3)+,x1
  163.         mpyuu   x0,y0,a
  164.         move              a0,x:(r1)+
  165.         dmacsu  x1,y0,a
  166.         macsu   y1,x0,a
  167.         dmacss  y1,x1,a
  168.         move              x:(r0)+,y0  x:(r3)+,x0
  169.         move              a0,x:(r1)+
  170.         move              a,x:(r1)+
  171. end_loop
  172.  
  173. ========================================================================
  174. B.3.9   Double Precision Autocorrelation
  175. ;   N: speech frame size
  176. ;   p: LPC order
  177.  
  178.         move    #cor,r1
  179.         move    #frame,r2
  180.         do      #lpc+1,_loop1
  181.         move    r2,r3
  182.         clr     b
  183.         move    #frame,r0
  184.         lua     (r2)+,r2
  185.         move    lc,x1
  186.         move    #>N-(p+1),a
  187.         add     x1,a      x:(r0)+,y0  x:(r3)+,x0
  188.         rep     a
  189.         mac     y0,x0,b   x:(r0)+,y0  x:(r3)+,x0
  190.         move              b0,x:(r1)+
  191.         move              b1,x:(r1)+
  192. _loop1
  193.  
  194. ========================================================================
  195.  
  196.